/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package usuario.model;

import conexao.DAOException;
import conexao.ConectaBanco;
import java.sql.Connection;
import java.sql.PreparedStatement;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Administrador
 */
public class UsuarioDAO {


     private Connection conn;

    public UsuarioDAO() throws DAOException{
        try{
            this.conn = ConectaBanco.getConnection();
        }catch(Exception e){
            throw new DAOException("Erro de conexão: " + ":\n" + e.getMessage());
        }
    }
    public Usuario validaLogin(String login, String senha) throws DAOException {
        PreparedStatement ps = null;
        Connection connL = null;
        ResultSet rs = null;

        try{
            String SQL = "SELECT * FROM User where EMAIL=?";
            connL = this.conn;

            ps = connL.prepareStatement(SQL);
            ps.setString(1, login);

            rs = ps.executeQuery();
            if (!rs.next()){
               throw new DAOException("Não foi encontrado nenhum usuario com o login " + login);

            } else {


              int id       = rs.getInt("ID_USER");
              String nome = rs.getString("NAME");
              String login_u    = rs.getString("EMAIL");
              String pass    = rs.getString("PASSWORD");
              return new Usuario(id, nome, login_u, pass);
            }


        }catch(SQLException sqle){
           throw new DAOException("Erro ao consultar usuario " + sqle);
        }
        finally{
           ConectaBanco.closeConnection(connL,ps);
        }
    }

    public void salvar(Usuario u) throws DAOException {
        PreparedStatement ps = null;
        Connection connL = null;
        if (u == null){
            throw new DAOException("O objeto passado não pode ser nulo.");
        }

        try{
            String SQL = "INSERT INTO User (ADMIN, NAME, LOGIN, SENHA) values (?,?,?,?)";
           connL = this.conn;

           ps = connL.prepareStatement(SQL);

           ps.setString(1, u.getNome    ());
           ps.setString(2, u.getNome());
           ps.setString(3, u.getLogin());
           ps.setString(4, u.getSenha());
            

            ps.executeUpdate();

        }catch(SQLException sqle){
           throw new DAOException("Erro ao inserir um novo Uusario--->> " + sqle);
        }
        finally{
           ConectaBanco.closeConnection(connL,ps);
        }
    }






        public ArrayList<Usuario> todosUsuarios() throws DAOException {
        PreparedStatement ps = null;
        Connection connL = null;
        ResultSet rs = null;

        try{
            String SQL = "SELECT * FROM User;";
            connL = this.conn;

            ps = connL.prepareStatement(SQL);
            rs = ps.executeQuery();

            ArrayList usuarios = new ArrayList<Usuario>();

            while( rs.next()){
              int codigo       = rs.getInt("ID");
              String nome = rs.getString("NOME");
              //String situacao    = rs.getString("login");



              usuarios.add(new Usuario(codigo, nome, nome, nome));
            }

            return usuarios;

        }catch(SQLException sqle){
           throw new DAOException("Erro ao consultar cliente " + sqle);
        }
        finally{
           ConectaBanco.closeConnection(connL,ps);
        }
    }


}
